package com.example.guide.validdata;

import org.springframework.util.StringUtils;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

/**
 * 自定义注解 @PasswordEqual 的关联类, 用于校验两次输入的面是否一致
 *
 * ConstraintValidator 接口的第一个参数传入的是自定义注解的类型，
 * 第二个参数传入的是自定义注解修饰的目标的类型
 *
 * 例如：
 * @PasswordEqual
 * public class PersonDTO {
 *     private String name;
 * }
 * 那么第二个参数传入的就是 PersonDTO
 *
 * 例如：
 * public class PersonDTO {
 *      @PasswordEqual
 *      private String name;
 * }
 * 那么第二个参数传入的就是 String
 */
public class PasswordValidator implements ConstraintValidator<PasswordEqual, PersonDTO> {

    // 这里必须要实现 isValid()，校验逻辑就是这里实现
    @Override
    public boolean isValid(PersonDTO personDTO, ConstraintValidatorContext constraintValidatorContext) {
        String password1 = personDTO.getName();
        String password2 = personDTO.getAge() + "";
        constraintValidatorContext.getDefaultConstraintMessageTemplate();
        return password1.equals(password2);

    }
}
